Skill

Ajax এবং Dynamic Content হ্যান্ডল করা

Java Technologies - জেসুপ (JSoup)
206

জেসুপ (JSoup) একটি শক্তিশালী Java লাইব্রেরি যা HTML পার্সিং এবং ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হয়। তবে, যখন কোনো ওয়েব পেজের কনটেন্ট Ajax বা JavaScript এর মাধ্যমে ডাইনামিকভাবে লোড হয়, তখন সাধারণ HTML পার্সিং পদ্ধতি কার্যকরী হয় না। কারণ জেসুপ শুধুমাত্র স্ট্যাটিক HTML ডকুমেন্ট পার্স করতে সক্ষম এবং এটি JavaScript বা Ajax রিকোয়েস্টে লোড হওয়া কনটেন্ট হ্যান্ডল করতে পারে না।

তবে, এই ধরনের ডাইনামিক কনটেন্ট এক্সট্র্যাক্ট করার জন্য কিছু বিকল্প পদ্ধতি রয়েছে, যা Ajax রিকোয়েস্ট বা JavaScript এর মাধ্যমে লোড হওয়া কনটেন্ট সংগ্রহ করতে সাহায্য করে।


Ajax এবং Dynamic Content

Ajax (Asynchronous JavaScript and XML)

Ajax হল একটি প্রযুক্তি যা ওয়েব পেজে পেজ রিফ্রেশ না করে সার্ভারের সাথে ডাটা আদান-প্রদান করতে ব্যবহৃত হয়। Ajax রিকোয়েস্টের মাধ্যমে ওয়েব পেজের কনটেন্ট ডাইনামিকভাবে লোড করা হয়, এবং JavaScript এর মাধ্যমে সেই কনটেন্টটি ব্যবহারকারীর ব্রাউজারে প্রদর্শিত হয়।

Dynamic Content

ডাইনামিক কনটেন্ট হল সেই কনটেন্ট যা ওয়েব পেজ লোড হওয়ার পর JavaScript বা Ajax রিকোয়েস্ট দ্বারা লোড হয়। এই ধরনের কনটেন্ট সাধারণ HTML কোডের মধ্যে সরাসরি উপস্থিত থাকে না, এবং সাধারণ HTML পার্সিং টেকনিক দিয়ে এক্সট্র্যাক্ট করা সম্ভব হয় না।


Ajax এবং Dynamic Content এক্সট্র্যাক্ট করার জন্য বিকল্প পদ্ধতি

১. WebDriver ব্যবহার করা (Selenium)

যেহেতু জেসুপ JavaScript চালাতে পারে না, তাই Ajax এবং ডাইনামিক কনটেন্ট এক্সট্র্যাক্ট করতে Selenium WebDriver ব্যবহার করা যেতে পারে। Selenium হল একটি টুল যা ব্রাউজারকে স্বয়ংক্রিয়ভাবে নিয়ন্ত্রণ করে এবং JavaScript বা Ajax দ্বারা লোড হওয়া কনটেন্ট এক্সট্র্যাক্ট করতে সাহায্য করে। এরপর সেই HTML কনটেন্ট জেসুপ দিয়ে পার্স করা সম্ভব।

উদাহরণ: Selenium এবং Jsoup ব্যবহার করে Ajax কনটেন্ট এক্সট্র্যাক্ট করা

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class SeleniumJsoupExample {
    public static void main(String[] args) {
        // Selenium WebDriver সেটআপ
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--headless"); // ব্রাউজার উইন্ডো না দেখানোর জন্য
        WebDriver driver = new ChromeDriver(options);

        try {
            // Ajax কনটেন্ট লোড হতে সময় দিন
            driver.get("https://example.com/ajax-page");

            // পেজের HTML সংগ্রহ
            String pageSource = driver.getPageSource();

            // Jsoup দিয়ে HTML পার্স করা
            Document doc = Jsoup.parse(pageSource);
            System.out.println(doc.title());
        } finally {
            // ব্রাউজার বন্ধ করা
            driver.quit();
        }
    }
}

কোডের ব্যাখ্যা:

  1. Selenium WebDriver: Selenium WebDriver ব্যবহার করে আমরা Chrome ব্রাউজারের একটি হেডলেস (headless) ইনস্ট্যান্স চালু করেছি, যাতে ব্রাউজার উইন্ডো না দেখায়। --headless অপশনটি ব্রাউজারকে UI ছাড়া চালু করে।
  2. Page Source: ব্রাউজার ওয়েব পেজ লোড করার পর, getPageSource() মেথড ব্যবহার করে পেজের HTML সংগ্রহ করা হয়।
  3. Jsoup Parsing: Selenium থেকে পাওয়া HTML কনটেন্ট Jsoup.parse() দিয়ে পার্স করা হয় এবং তারপর এর টাইটেল প্রিন্ট করা হয়।

২. Network Requests বা API Calls ট্র্যাক করা

অনেক ওয়েবসাইট Ajax রিকোয়েস্টগুলিকে API কল হিসেবে পরিচালনা করে। এই ধরনের ওয়েবসাইটে, আপনি সরাসরি Ajax রিকোয়েস্টগুলির API URL ট্র্যাক করে সেই রিকোয়েস্টের মাধ্যমে ডাইনামিক কনটেন্ট এক্সট্র্যাক্ট করতে পারেন।

এটি করার জন্য, আপনাকে ব্রাউজারের ডেভেলপার টুলস বা Fiddler, Postman ইত্যাদি টুল ব্যবহার করে ওয়েব পেজের Ajax রিকোয়েস্টগুলির URL বের করতে হবে। তারপর সেই URL ব্যবহার করে Java বা অন্যান্য HTTP লাইব্রেরি দিয়ে API কল করে ডাইনামিক কনটেন্ট সংগ্রহ করা যায়।

উদাহরণ: HttpURLConnection দিয়ে Ajax API কল করা

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class AjaxRequestExample {
    public static void main(String[] args) {
        try {
            // Ajax API URL
            String apiUrl = "https://example.com/ajax-api-endpoint";
            URL url = new URL(apiUrl);
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();
            connection.setRequestMethod("GET");

            // API কল করা
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String inputLine;
            StringBuilder response = new StringBuilder();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            // ডাটা প্রিন্ট করা
            System.out.println(response.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

কোডের ব্যাখ্যা:

  1. API URL: Ajax কনটেন্ট লোড হওয়া API URL ব্যবহার করা হয়েছে।
  2. HttpURLConnection: HttpURLConnection ব্যবহার করে API থেকে GET রিকোয়েস্ট পাঠানো হয়েছে এবং রেসপন্স হিসেবে ডাইনামিক কনটেন্ট পাওয়া গেছে।
  3. BufferedReader: API রেসপন্স রিড করতে BufferedReader ব্যবহার করা হয়েছে।

সারাংশ

জেসুপ (JSoup) শুধুমাত্র স্ট্যাটিক HTML ডকুমেন্ট পার্স করতে পারে, কিন্তু Ajax এবং JavaScript দ্বারা লোড হওয়া ডাইনামিক কনটেন্ট এক্সট্র্যাক্ট করার জন্য Selenium WebDriver ব্যবহার করা হয়। Selenium দিয়ে ওয়েব পেজ লোড করার পর, তার HTML কনটেন্ট জেসুপ দিয়ে পার্স করা সম্ভব। এছাড়া, সরাসরি Ajax রিকোয়েস্টের API URL ট্র্যাক করে HttpURLConnection বা অন্যান্য HTTP লাইব্রেরি দিয়ে ডাইনামিক কনটেন্ট সংগ্রহ করা যায়।

Content added By

Ajax এর মাধ্যমে Dynamic Content লোড করা

152

JSoup মূলত HTML পার্সিং এবং ওয়েব স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হলেও, এটি Ajax রিকোয়েস্ট দ্বারা লোড হওয়া ডাইনামিক কন্টেন্ট নিয়ে সরাসরি কাজ করতে পারে না। কারণ, JSoup শুধুমাত্র স্ট্যাটিক HTML ডকুমেন্টে কাজ করে এবং এটি JavaScript বা Ajax দ্বারা ডাইনামিকভাবে লোড হওয়া কন্টেন্ট প্রক্রিয়া করতে পারে না। তবে, Ajax রিকোয়েস্টের মাধ্যমে ডাইনামিক কন্টেন্ট লোড করা এবং তা সংগ্রহ করার জন্য একটি বিকল্প পদ্ধতি ব্যবহার করা যেতে পারে।


Ajax রিকোয়েস্ট কি?

Ajax (Asynchronous JavaScript and XML) হল একটি ওয়েব প্রযুক্তি যা পেজ রিফ্রেশ না করে সার্ভার থেকে ডাটা লোড করতে ব্যবহৃত হয়। এটি ওয়েব পেজের ডাইনামিক কন্টেন্ট লোড এবং ইন্টারঅ্যাকশন সহজ করে। Ajax রিকোয়েস্টের মাধ্যমে পেজের কন্টেন্টের পরিবর্তন করা হলেও, JSoup স্বাভাবিকভাবে সেই পরিবর্তন দেখাতে পারে না কারণ এটি JavaScript চালায় না। তবে, এই ডাইনামিক কন্টেন্ট সংগ্রহ করার জন্য কিছু অতিরিক্ত টুল বা পদ্ধতি ব্যবহার করা যেতে পারে।


Ajax কন্টেন্ট সংগ্রহের জন্য বিকল্প পদ্ধতি

1. Selenium ব্যবহার করা

Selenium একটি অটোমেশন টেস্টিং টুল যা ওয়েব পেজে JavaScript এবং Ajax রিকোয়েস্ট কার্যকর করতে সক্ষম। JSoup সাধারণ HTML পার্সিংয়ের জন্য উপযুক্ত, কিন্তু যখন JavaScript এবং Ajax এর মাধ্যমে ডাইনামিক কন্টেন্ট লোড হয়, তখন Selenium ব্যবহার করা যেতে পারে। এটি ওয়েব পেজে ব্রাউজারের মতো কাজ করে এবং JavaScript সম্পাদন করার মাধ্যমে Ajax রিকোয়েস্টের মাধ্যমে লোড হওয়া কন্টেন্ট এক্সট্র্যাক্ট করতে সক্ষম।

উদাহরণ:

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class AjaxScrapingExample {
    public static void main(String[] args) {
        // Selenium WebDriver সেটআপ
        WebDriver driver = new ChromeDriver();
        driver.get("https://example.com");

        // পেজের HTML লোড হওয়ার পর, পেজের HTML সংগ্রহ
        String pageSource = driver.getPageSource();

        // Jsoup দিয়ে HTML পার্সিং
        Document doc = Jsoup.parse(pageSource);

        // পরবর্তী পদক্ষেপ হিসেবে প্রয়োজনীয় তথ্য সংগ্রহ
        System.out.println(doc.select("div.dynamic-content").text());

        // ব্রাউজার বন্ধ করা
        driver.quit();
    }
}

এই উদাহরণে, Selenium এর মাধ্যমে ওয়েব পেজে Ajax রিকোয়েস্টের মাধ্যমে লোড হওয়া কন্টেন্ট লোড করা হয়েছে এবং তারপর JSoup ব্যবহার করে সেই কন্টেন্ট পার্স করা হয়েছে।


2. HTTP রিকোয়েস্ট এবং API কল

অন্য একটি পদ্ধতি হলো সরাসরি Ajax রিকোয়েস্টে ব্যবহৃত API এর মাধ্যমে ডাটা সংগ্রহ করা। অনেক ওয়েবসাইট Ajax রিকোয়েস্টের মাধ্যমে ডাইনামিক কন্টেন্ট লোড করতে API কল ব্যবহার করে। আপনি সরাসরি সেই API রিকোয়েস্ট পাঠিয়ে ডাটা সংগ্রহ করতে পারেন।

এটি করার জন্য, আপনি Java এর HttpURLConnection বা অন্যান্য HTTP লাইব্রেরি যেমন OkHttp ব্যবহার করতে পারেন এবং সরাসরি Ajax রিকোয়েস্টের মাধ্যমে লোড হওয়া JSON বা HTML ডাটা সংগ্রহ করতে পারেন।

উদাহরণ:

import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.BufferedReader;

public class ApiRequestExample {
    public static void main(String[] args) throws Exception {
        String url = "https://example.com/api/getdata";  // Ajax API URL

        // HTTP রিকোয়েস্ট তৈরি
        HttpURLConnection connection = (HttpURLConnection) new URL(url).openConnection();
        connection.setRequestMethod("GET");

        // রেসপন্স পড়া
        BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        String inputLine;
        StringBuffer response = new StringBuffer();
        while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
        }
        in.close();

        // রেসপন্স প্রিন্ট
        System.out.println(response.toString());
    }
}

এই উদাহরণে, সরাসরি Ajax API এর মাধ্যমে ডাটা সংগ্রহ করা হয়েছে এবং সেই ডাটা JSON বা HTML ফরম্যাটে প্রক্রিয়া করা যেতে পারে।


সারাংশ

JSoup স্বাভাবিকভাবে Ajax এর মাধ্যমে লোড হওয়া ডাইনামিক কন্টেন্ট এক্সট্র্যাক্ট করতে সক্ষম নয়। তবে, আপনি Selenium ব্যবহার করে JavaScript চালানো ওয়েব পেজের কন্টেন্ট সংগ্রহ করতে পারেন বা সরাসরি Ajax রিকোয়েস্টের API কল ব্যবহার করে ডাটা সংগ্রহ করতে পারেন। এই পদ্ধতিগুলি JSoup এর সাথে মিলিত হয়ে আপনার ওয়েব স্ক্র্যাপিং কাজকে আরও কার্যকরী ও সহজ করতে সহায়তা করবে।

Content added By

JSoup এর সীমাবদ্ধতা এবং Dynamic Content Fetching এর জন্য টিপস

245

যদিও JSoup একটি অত্যন্ত শক্তিশালী লাইব্রেরি যা HTML parsing, DOM manipulation, এবং web scraping-এর জন্য ব্যবহৃত হয়, তবে এর কিছু সীমাবদ্ধতাও রয়েছে। এখানে কিছু প্রধান সীমাবদ্ধতা আলোচনা করা হলো:

১. JavaScript প্রসেসিং সমর্থন নেই

JSoup একটি স্ট্যাটিক HTML পার্সিং টুল, যা JavaScript কোড বা ক্লায়েন্ট-সাইড স্ক্রিপ্টের মাধ্যমে ডাইনামিকভাবে পরিবর্তিত কন্টেন্টের সাথে কাজ করতে পারে না। এটি কেবলমাত্র স্ট্যাটিক HTML কন্টেন্ট পার্স করতে সক্ষম, যার মানে হল যে আপনি যদি কোনো ওয়েব পেজে JavaScript দ্বারা প্রক্রিয়া হওয়া ডেটা স্ক্র্যাপ করতে চান, তাহলে JSoup এটি করতে পারবে না।

২. AJAX দ্বারা লোড হওয়া কন্টেন্টের সীমাবদ্ধতা

যেহেতু JSoup স্ট্যাটিক HTML কন্টেন্টে কাজ করে, তাই এটি AJAX বা অন্যান্য ডাইনামিক ওয়েব পেজ থেকে লোড হওয়া কন্টেন্ট এক্সট্র্যাক্ট করতে পারে না। আপনি যদি এমন ওয়েবসাইট থেকে ডেটা এক্সট্র্যাক্ট করতে চান যেখানে AJAX কল বা JavaScript ডেটা লোড করছে, JSoup ব্যবহার করা সম্ভব হবে না।

৩. হালনাগাদ কন্টেন্ট এক্সট্র্যাক্টের সমস্যা

কিছু ওয়েবসাইটে কন্টেন্ট নিয়মিতভাবে পরিবর্তিত বা আপডেট হয় (যেমন লাইভ স্ট্রিমিং ডেটা বা রিয়েল-টাইম কন্টেন্ট)। JSoup এতে সহায়ক নয়, কারণ এটি শুধুমাত্র সেই মুহূর্তের HTML ডকুমেন্ট পড়ে এবং তার পর আর কোনো পরিবর্তন দেখতে বা ট্র্যাক করতে পারে না।

৪. Limited Error Handling

JSoup সাধারণত অনেক ধরনের HTML ত্রুটি (যেমন ভুলভাবে বন্ধ করা ট্যাগ) সহ্য করে, কিন্তু এটি কিছু ক্ষেত্রে খুব অদ্ভুত বা অস্বাভাবিক HTML স্ট্রাকচার প্রসেস করতে অক্ষম হতে পারে।


Dynamic Content Fetching এর জন্য টিপস

যেহেতু JSoup স্ট্যাটিক HTML কন্টেন্টে কাজ করে, তাই যদি আপনি ডাইনামিক বা JavaScript দ্বারা লোড হওয়া কন্টেন্ট স্ক্র্যাপ করতে চান, তাহলে কিছু অতিরিক্ত টুল ব্যবহার করতে হতে পারে। নিচে কিছু টিপস দেয়া হলো যা আপনাকে ডাইনামিক কন্টেন্ট ফেচিংয়ে সাহায্য করতে পারে:

১. Selenium ব্যবহার করুন

Selenium একটি জনপ্রিয় টুল যা ব্রাউজার অটোমেশন করতে সক্ষম। এটি JavaScript এবং AJAX দ্বারা লোড হওয়া কন্টেন্টকে এক্সট্র্যাক্ট করতে সাহায্য করে। JSoup এর সাথে Selenium ব্যবহার করলে আপনি ডাইনামিক পেজে JSoup এর সুবিধা গ্রহণ করতে পারেন।

Selenium ও JSoup একত্রে ব্যবহার:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumJsoupExample {
    public static void main(String[] args) {
        // Selenium WebDriver সেটআপ
        System.setProperty("webdriver.chrome.driver", "path_to_chromedriver");
        WebDriver driver = new ChromeDriver();
        
        // ওয়েব পেজে ব্রাউজার নিয়ে যাওয়া
        driver.get("https://example.com");

        // পেজের HTML কন্টেন্ট এক্সট্র্যাক্ট করা
        String pageSource = driver.getPageSource();
        
        // JSoup ব্যবহার করে HTML পার্স করা
        Document doc = Jsoup.parse(pageSource);
        
        // HTML থেকে ডেটা এক্সট্র্যাক্ট করা
        System.out.println(doc.title());
        
        // WebDriver বন্ধ করা
        driver.quit();
    }
}

এখানে, Selenium ব্যবহার করে আপনি JavaScript দ্বারা ডাইনামিকভাবে লোড হওয়া কন্টেন্টের HTML সংগ্রহ করেছেন এবং তারপর JSoup দিয়ে সেই HTML পার্স করেছেন।

২. Headless Browsers ব্যবহার করুন

Headless ব্রাউজারগুলি হল ব্রাউজার যা GUI ছাড়া চলতে পারে এবং মূলত বোট বা স্ক্র্যাপিংয়ের জন্য ব্যবহৃত হয়। আপনি যেমন Selenium এর Headless মোড ব্যবহার করে কন্টেন্ট স্ক্র্যাপ করতে পারেন। Headless ব্রাউজারগুলি ব্রাউজারের সাথে ম্যানুয়াল ইন্টারঅ্যাকশন ছাড়া স্ক্রিপ্টের মাধ্যমে ওয়েব পেজের কন্টেন্ট রেন্ডার করতে সক্ষম।

৩. JavaScript Rendering Libraries ব্যবহার করুন

যদি আপনি JSoup এর বাইরে JavaScript রেন্ডারিং বা ডাইনামিক কন্টেন্ট এক্সট্র্যাক্ট করতে চান, তাহলে অন্য লাইব্রেরি যেমন HtmlUnit, Puppeteer, বা Playwright ব্যবহার করতে পারেন। এই টুলগুলি JavaScript রেন্ডার করতে সক্ষম এবং আপনি তাদের সাথে JSoup একত্রে ব্যবহার করে ডাইনামিক কন্টেন্ট স্ক্র্যাপ করতে পারবেন।

৪. ওয়েবসাইটের API ব্যবহার করা

অনেক ওয়েবসাইট তাদের কন্টেন্ট প্রাপ্তির জন্য একটি API প্রদান করে। যদি ওয়েবসাইটটি একটি API সরবরাহ করে, তবে এটি ব্যবহার করা JSoup থেকে অনেক সহজ হতে পারে। API ব্যবহার করে আপনি JSON বা XML আকারে কাঙ্ক্ষিত ডেটা পাবেন, যা প্রক্রিয়াকরণ ও স্ক্র্যাপিং-এর জন্য আরও সুবিধাজনক।


সারাংশ

JSoup একটি শক্তিশালী HTML পার্সিং টুল, তবে এটি কিছু সীমাবদ্ধতার সম্মুখীন হয়, যেমন JavaScript বা AJAX দ্বারা লোড হওয়া কন্টেন্ট স্ক্র্যাপ করা সম্ভব না হওয়া। এই ধরনের ডাইনামিক কন্টেন্ট ফেচ করার জন্য Selenium, Headless ব্রাউজার, JavaScript রেন্ডারিং লাইব্রেরি বা API ব্যবহারের মতো বিকল্প পদ্ধতি গ্রহণ করা যেতে পারে। এই টিপসগুলির মাধ্যমে আপনি JSoup এর সীমাবদ্ধতাগুলি কাটিয়ে ডাইনামিক ওয়েব পেজ থেকে ডেটা এক্সট্র্যাক্ট করতে পারবেন।

Content added By

Practical উদাহরণ: JSoup দিয়ে Partial Page Fetching

156

JSoup ব্যবহার করে একটি পূর্ণ HTML পেজ থেকে নির্দিষ্ট অংশ বা অংশবিশেষ (partial content) সংগ্রহ করা সম্ভব। এটি সাধারণত ওয়েব স্ক্র্যাপিংয়ে ব্যবহৃত হয়, যেখানে শুধুমাত্র একটি নির্দিষ্ট সেকশন বা এলিমেন্টের তথ্য প্রয়োজন হয়। JSoup HTML পেজ থেকে নির্দিষ্ট ট্যাগ, ক্লাস, আইডি বা অন্য কোনো সিলেক্টর ব্যবহার করে প্রয়োজনীয় অংশটি বের করে এনে প্রক্রিয়া করতে সহায়ক হয়।

এখানে, JSoup ব্যবহার করে কীভাবে একটি পেজ থেকে শুধুমাত্র প্রয়োজনীয় অংশ (যেমন কোনো টেবিল, প্যারাগ্রাফ বা ডিভ) এক্সট্র্যাক্ট করা যায়, তার একটি উদাহরণ দেওয়া হয়েছে।


Partial Page Fetching এর উদাহরণ

ধরা যাক, আমাদের একটি ওয়েব পেজ রয়েছে যেখানে বিভিন্ন তথ্য রয়েছে, তবে আমাদের শুধু একটি নির্দিষ্ট div ট্যাগের (যেমন, একটি class="content" সহ ডিভ) তথ্য প্রয়োজন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে আমরা একটি HTML পেজ থেকে শুধুমাত্র একটি নির্দিষ্ট div ট্যাগের তথ্য এক্সট্র্যাক্ট করব।

উদাহরণ: Partial Page Fetching with JSoup

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupPartialPageFetch {
    public static void main(String[] args) throws Exception {
        String html = "<html><head><title>Example</title></head><body>" +
                "<div class='header'>Header Content</div>" +
                "<div class='content'>This is the content we need to extract.</div>" +
                "<div class='footer'>Footer Content</div>" +
                "</body></html>";
        
        // HTML পার্সিং
        Document doc = Jsoup.parse(html);
        
        // 'content' ক্লাস সহ ডিভ এক্সট্র্যাক্ট করা
        Element contentDiv = doc.select("div.content").first();
        
        // শুধুমাত্র 'content' ডিভের তথ্য প্রদর্শন
        System.out.println("Extracted Content: " + contentDiv.text());
    }
}

এখানে, doc.select("div.content").first(); কোডের মাধ্যমে HTML পেজ থেকে class="content" সহ প্রথম div ট্যাগটি নির্বাচন করা হয়েছে। তারপর সেই div ট্যাগের মধ্যে থাকা টেক্সট আমরা .text() মেথড ব্যবহার করে এক্সট্র্যাক্ট করেছি।

আউটপুট:

Extracted Content: This is the content we need to extract.

External Page থেকে Partial Content Fetch করা

যদি আপনার প্রয়োজন হয় একটি ওয়েবসাইট থেকে সরাসরি ডাটা এক্সট্র্যাক্ট করার, আপনি JSoup এর মাধ্যমে HTTP রিকোয়েস্ট পাঠিয়ে পেজের অংশবিশেষও এক্সট্র্যাক্ট করতে পারবেন। নিচে একটি উদাহরণ দেওয়া হলো যেখানে আমরা একটি রিমোট ওয়েবসাইট থেকে শুধুমাত্র একটি নির্দিষ্ট সেকশন (যেমন, কোনো ক্লাস বা আইডি) এক্সট্র্যাক্ট করব।

উদাহরণ: External Page Fetching

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

public class JsoupExternalPageFetch {
    public static void main(String[] args) throws Exception {
        // ওয়েব পেজ থেকে ডাটা সংগ্রহ করা
        Document doc = Jsoup.connect("https://example.com").get();
        
        // 'content' ক্লাস সহ ডিভ এক্সট্র্যাক্ট করা
        Element contentDiv = doc.select("div.content").first();
        
        // শুধুমাত্র 'content' ডিভের তথ্য প্রদর্শন
        System.out.println("Extracted Content: " + contentDiv.text());
    }
}

এখানে, Jsoup.connect("https://example.com").get(); মেথডের মাধ্যমে ওয়েবসাইট থেকে HTML ডাটা সংগ্রহ করা হচ্ছে এবং তারপর div.content সিলেক্টর ব্যবহার করে নির্দিষ্ট ডিভের তথ্য এক্সট্র্যাক্ট করা হচ্ছে।

দ্রষ্টব্য: রিমোট ওয়েব পেজ থেকে ডাটা এক্সট্র্যাক্ট করার জন্য আপনার ইন্টারনেট সংযোগ সক্রিয় থাকতে হবে এবং নিশ্চিত করতে হবে যে আপনার প্রোগ্রামটি Jsoup এর সাথে HTTP রিকোয়েস্ট পাঠাতে সক্ষম।


Partial Page Fetching এর উপকারিতা

  • ডাটা এক্সট্র্যাকশনে দ্রুততা: পুরো পেজ থেকে শুধু প্রয়োজনীয় অংশটি এক্সট্র্যাক্ট করার ফলে প্রক্রিয়াটি দ্রুত এবং অধিক কার্যকরী হয়।
  • ওয়েব স্ক্র্যাপিং: ওয়েব স্ক্র্যাপিংয়ের সময় আমরা প্রায়ই সম্পূর্ণ HTML পেজের পরিবর্তে শুধু নির্দিষ্ট ডেটা এক্সট্র্যাক্ট করতে চাই, যেমন একটি নির্দিষ্ট টেবিল বা প্যারাগ্রাফ।
  • সম্পূর্ণ পেজ লোড করার প্রয়োজন নেই: পূর্ণ HTML পেজ লোড না করে শুধুমাত্র নির্দিষ্ট অংশটি এক্সট্র্যাক্ট করা গেলে সম্পদের ব্যবহার কমে যায়।

সারাংশ

JSoup ব্যবহার করে HTML পেজ থেকে নির্দিষ্ট অংশ এক্সট্র্যাক্ট করা খুব সহজ এবং কার্যকরী। select() মেথডের মাধ্যমে নির্দিষ্ট সিলেক্টর ব্যবহার করে আপনি HTML ডকুমেন্টের কোন অংশও এক্সট্র্যাক্ট করতে পারেন। রিমোট ওয়েবসাইট থেকে ডাটা এক্সট্র্যাক্ট করতে হলে Jsoup.connect() মেথড ব্যবহার করা হয়। এই প্রক্রিয়া ওয়েব স্ক্র্যাপিং এবং ডাটা এক্সট্র্যাকশনে অত্যন্ত উপকারী।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...